<?php 
$pacote = "classes/componentes";
$pathToThis = pathinfo(__FILE__);
$root = substr($pathToThis['dirname'], 0, strlen($pathToThis['dirname']) - strlen($pacote) - 1);

require_once $root."/classes/base/ComponenteArray.class.php";
require_once $root."/classes/base/Conversor.class.php";

class ArrayCheckBox extends ComponenteArray {

	private $orientacao = "left";
	
	function ArrayCheckBox($label, $orientacao = "right") {
		$this->orientacao = $orientacao;
	}

	public function adicionaValor($descricao, $valor) {
		$componente = new InputCheckBoxWithValue($descricao, $valor, $this->orientacao);
		parent::adiciona($componente);
	}

	public function setValorSubmetido($valor) {
		foreach ($this->getValores() as $componente) {
			$componente->setValorSubmetido(false);
		}
		if (is_array($valor)) {
			for ($i = 0; $i < count($valor); $i++) {
				foreach ($this->getValores() as $componente) {
					if ($valor[$i] == $componente->getValue()) {
						$componente->setValorSubmetido(true);
					}
				}
			}
		}
	}

	public function atualizaValor($nomeComponente, $valor, $parametrosAcao) {
		foreach ($this->getValores() as $componente) {
			$componente->atualizaValor($nomeComponente, null, $parametrosAcao);
		}
		if (is_array($valor)) {
			for ($i = 0; $i < count($valor); $i++) {
				foreach ($this->getValores() as $componente) {
					if ($valor[$i] == $componente->getValue()) {						
						$componente->atualizaValor($nomeComponente, true, $parametrosAcao);
					}
				}
			}
		}
	}

	public function finalizaValor() {
		foreach ($this->getValores() as $componente) {
			if (!$componente->valorFoiSetado()) {
				$componente->finalizaValor();
			}
		}
	}

	public function setValor($valor) {
		foreach ($this->getValores() as $componente) {
			$componente->setValor(false);
		}
		if (is_array($valor)) {
			for ($i = 0; $i < count($valor); $i++) {
				foreach ($this->getValores() as $componente) {
					if ($valor[$i] == $componente->getValue()) {
						$componente->setValor(true);
					}
				}
			}
		}
	}

	public function getValorConvertido() {

	}

}
?>